//
//  BPTabBar.swift
//  BPWeiBo
//
//  Created by apple on 16/4/6.
//  Copyright © 2016年 apple. All rights reserved.

import UIKit

class BPTabBar: UITabBar{

    //在创建子控件的时候,在我们的中间加上自定义按钮
    
    //重写父类frame的构造方法,来添加我们自定义的按钮
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        addSubview(plusBtn)
    }
    //系统自动生成的错误报告
    //当该视图通过xib和sb加载的时候 才会执行这个方法 在这个方法内部默认实现报错
    //为什么:一旦实现init方法,表示当前这个类的对象可以通过手写代码创建 默认为不支持通过xib或stroyboard加载
    required init?(coder aDecoder: NSCoder) {
        //如果把下面这个注释掉,表示可以通过xib或stroyboard加载和init加载
        //如果不注释掉,就是只能从手写代码加载
        fatalError("init(coder:) has not been implemented")
    }
    
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        //设置控件的frame
        creatSubviewFrame()
        
    }
    
    
    //MARK:添加自定义的button,利用懒加载
     lazy var plusBtn: UIButton = {
        
        //1.实例化一个按钮
        let btn = UIButton()
        //2.设置按钮的属性
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        btn.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        btn.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        btn.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        
        //3.设置按钮的frame
        return btn
    }()

    //MARK:设置控件frame的抽取的方法
    func creatSubviewFrame() {
        //重新设置我们每一个图标的frame
        let iconW: CGFloat = self.frame.width / 5
        let iconH: CGFloat = self.frame.height
        let iconX: CGFloat = 0
        let iconY: CGFloat = 0
        var index: CGFloat = 0
        let rect: CGRect = CGRectMake(iconX, iconY, iconW, iconH)
        //遍历子控件设置frame
        for subView in subviews {
            
            if subView.isKindOfClass(NSClassFromString("UITabBarButton")!) {
                //index += index == 1 ? 2 : 1
                
                //iconX = index * iconW
                
                //当子控件是我们需要的barItem的时候,设置frame
                subView.frame = CGRectOffset(rect, index * iconW, 0)
                
                index += (index == 1) ? 2 : 1
                
            }
        }
        
        plusBtn.frame = CGRectOffset(rect, 2 * iconW, 0)
        //如何将按钮设置突出我们的tabbar
        //plusBtn.frame = CGRectOffset(rect, 2 * iconW, -10)
        //bringSubviewToFront(plusBtn)
    }
    
    

}
